var tcp = require('tcp');

var network = require('network');

var net = network.openNetWorkClient();

/** 获取网络类型
* 目前支持两种类型：wifi cellular（蜂窝网）
*/
var type = net.getType();
console.log('________>>>>>>>>>> net type is: ' + type);

/** 获取网络状态
* 目前支持两种状态：connect disconnect（蜂窝网）
*/
var status = net.getStatus();
console.log('________>>>>>>>>>> net status is: ' + status);

//编写一个TCP 测试函数
function TCP_test(){
	
	console.log('________>>>>>>>>>>start TCP');
	
	//编写一个连接成功的处理函数
	function onConnect() {
		//直接发送字符串 'hello, this is tcp client test'
	  tcpClient.send({
		message: 'hello, this is tcp client test',
		success: function() {
		  console.log('________>>>>>>>>>>tcp send success');
		},
		fail: function() {
		  console.log('________>>>>>>>>>>tcp send failed');
		}
	  });
	}
	
	//创建一个TCP客户端实例，并连接到对应的服务器
	var tcpClient = tcp.createClient({
	  host: '47.243.82.179',
	  port: 8080,
	  success: function() {
		console.log('________>>>>>>>>>>tcp client connect success');
	  },
	  fail: function() {
		console.log('________>>>>>>>>>>tcp client connect failed');
	  }
	});

	//设置 message 网络接收数据事件处理函数
	tcpClient.on('message', function(data) {
	  console.log('________>>>>>>>>>>tcp receive data: ' + data);
	  tcpClient.close();
	});

	//设置网络连接事件处理函数
	tcpClient.on('connect', function() {
	  console.log('________>>>>>>>>>>tcp client connected');
	  onConnect();
	});
	//设置网络断开事件处理函数
	tcpClient.on('close', function() {
	  console.log('________>>>>>>>>>>tcp client closed');
	});
	//设置网络错误事件处理函数
	tcpClient.on('error', function(err) {
	  console.log('________>>>>>>>>>>tcp client error: ' + err);
	});
}

//判断一下当前蜂窝网络是否连接
if (status == 'connect') {
	//如果已经连接，直接调用TCP test
    TCP_test();
} else {
	//设置事件，如果收到蜂窝网络连接事件，调用TCP test函数
    net.on('connect', function() {
        TCP_test();
    })
}

//如果蜂窝网络断开连接，打印日志
net.on('disconnect', function(){
    console.log('________>>>>>>>>>> device is disconnect');
});